from kedro.pipeline import Node, Pipeline

from .nodes import create_model_input_table, preprocess_companies, preprocess_shuttles


def create_pipeline(**kwargs) -> Pipeline:
    # 这些节点做的就是数据清洗和预处理
    return Pipeline(
        [
            # 预处理公司数据，主要就是格式化一些列
            Node(
                func=preprocess_companies,
                inputs="companies",
                outputs="preprocessed_companies",
                name="preprocess_companies_node",
            ),
            # 预处理飞船数据，主要就是格式化一些列
            Node(
                func=preprocess_shuttles,
                inputs="shuttles",
                outputs="preprocessed_shuttles",
                name="preprocess_shuttles_node",
            ),
            # 创建模型输入表，方法是把三个表连接起来
            Node(
                func=create_model_input_table,
                inputs=["preprocessed_shuttles", "preprocessed_companies", "reviews"],
                # model_input_table 数据科学项目中很常见的一个命名，它通常是经过预处理和合并后的数据，专门用于机器学习或数据分析模型的输入。
                outputs="model_input_table",
                name="create_model_input_table_node",
            ),
        ]
    )
